/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"70A23095-FF47-44FE-BF0A-8AD08B87D94C",variableType:4}
 */
var fanio = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"09041054-FD77-4431-B9CF-E0909C9F6FDC",variableType:4}
 */
var fAsientoCierre = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"4C584EE1-96E1-4485-AE06-975284468D3A",variableType:4}
 */
var faux_mes = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"C242D1E9-7185-4094-99EE-4DFF3A9E8A82"}
 */
var fcta_des = '';

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"28F24D60-A7A9-4B21-899D-D860659175FD"}
 */
var fcta_has = '';

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"AA97D61D-5814-453F-AD04-FE0EE8897038",variableType:4}
 */
var fcuantos = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"9B619C1E-F6D5-4EBE-A44C-06133DAE6424",variableType:4}
 */
var ftarea = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"EF0573EC-BB21-4B29-B3BF-9449DA9B10D3",variableType:4}
 */
var ftipo = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"FCD7B3D2-E2C9-4F03-A00A-CCF082B5452B",variableType:8}
 */
var ftotdol = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"50E386A6-1639-4873-B421-2037E792AEB0",variableType:8}
 */
var ftotpes = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"F4DD84CA-C0D1-4DA5-8848-714F524F111A",variableType:4}
 */
var ult_mes = null;

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"C3D3C72E-C9B0-4AF5-BACF-E9EC76C32C32"}
 */
function onAction_con(event) {
	if (fanio == null || fcta_des == null || fcta_has == null) 
	{
		globals.DIALOGS.showWarningDialog("Aviso","Faltan ingresar datos","Ok")
		return   		
	}	
	if (fcta_des > fcta_has) 
	{
		globals.DIALOGS.showWarningDialog("Aviso","Verifique el rango de cuentas ingresadas","Ok")
		return   		
	}		
  	if (ftarea == 1) 
	{
		Movim_cta()
	}
	else
	{
		Saldos_cta()
	}  
}

/**
 * @properties={typeid:24,uuid:"D0569767-ED06-4472-A7CA-1280044785CC"}
 */
function csv()
{
	var $cols = new Array("",'cuenta','descripcion','division','ene','feb','mar','abr','may','jun','jul','ago','set','oct','nov','dic')
	globals.gExportaExcel("movim_por_cta_det",$cols, 'csv')
}

/**
 * @properties={typeid:24,uuid:"EEF7A3A2-0753-4962-8164-FBDDEF47AA90"}
 */
function xls()
{
	var $cols = new Array("",'cuenta','descripcion','division','ene','feb','mar','abr','may','jun','jul','ago','set','oct','nov','dic')
	globals.gExportaExcel("movim_por_cta_det",$cols, 'xls')
}

/**
 * Callback method for when form is shown.
 *
 * @param {Boolean} firstShow form is shown first time after load
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"789D2E24-1C80-4134-916E-D58166897218"}
 */
function onShow(firstShow, event) {
	globals.gmoneda_consulta = 1
	ftarea = 1
	ftipo  = 1
	fcta_des = null
	fcta_has = null
	fanio    = globals.gAnio
	fAsientoCierre = 0
}

/**
 * @properties={typeid:24,uuid:"FC059C21-DFE7-4F25-B290-CE2FBC6CD1FF"}
 * @AllowToRunInFind
 */
function Movim_cta() {
	
	var $meses  = new Array()
	/** @type {JSFoundSet<db:/contable/varios>} */
	var $varios = databaseManager.getFoundSet('contable','varios')
	var estado = $varios.find()
	if (estado == false)
	{
		globals.DIALOGS.showWarningDialog("Aviso","Error al hacer el Find","Ok")
		return -1
	}
	$varios.tipo = 1
	$varios.search()
	$varios.sort("codigo asc")
	var $cantMes = databaseManager.getFoundSetCount($varios)
	
	for (var i = 1 ; i <= $cantMes ; i++)
	{
		$varios.setSelectedIndex(i)
		$meses  [i+2] = $varios.abrevia
	}
	$meses[0] = 'Cuenta'
	$meses[1] = 'Descripcion'
	$meses[2] = 'Division'		
	var $ds = databaseManager.createEmptyDataSet(0,$meses)
	
	/** @type {JSFoundSet<db:/contable/saldos>} */
	var $saldos = databaseManager.getFoundSet('contable','saldos')
	var estado = $saldos.find()
	if (estado == false)
	{
		globals.DIALOGS.showWarningDialog("Aviso","Error al hacer el Find","Ok")
		return -1
	}
	$saldos.anio = fanio
	$saldos.saldos_to_cuentas.cuenta_busca = fcta_des + "..." + fcta_has
	var ctos = $saldos.search()
	if (ctos == 0)
	{
		globals.DIALOGS.showWarningDialog("Aviso","Sin movimientos","Ok")
		return 	-1			
	}
	if (ftipo == 1)
	{
		$saldos.sort("saldos_to_cuentas.cuenta_busca asc, mes asc")
	}
	else
	{
		$saldos.sort("saldos_to_cuentas.cuenta_busca asc, division asc, mes asc")
	}
	var $ctos = databaseManager.getFoundSetCount($saldos)
	for (var i = 1 ; i <= $ctos ; i++)
	{
		$saldos.setSelectedIndex(i)
		ftotpes = $saldos.debe_pes - $saldos.haber_pes
		ftotdol = $saldos.debe_dol - $saldos.haber_dol
		if (gejercicio_to_ejercicios.fecha_fin.getMonth() == $saldos.mes && fAsientoCierre == 1)
		{
			ftotpes = ftotpes - $saldos.saldo_pes_cierre
			ftotdol = ftotdol - $saldos.saldo_dol_cierre
		}		
		if (i == 1)
		{
			var $cuenta   = $saldos.cuentas_id
			var $division = $saldos.division
			var $texto    = $saldos.saldos_to_cuentas.descripcion
			var $formato  = $saldos.saldos_to_cuentas.cuenta_formato 
			var saldos    = new Array()
			for (var j = 1 ; j <= 12 ; j++)
			{
				saldos[j] = null
			}
		}
		if (ftipo == 1)
		{
			if ($cuenta == $saldos.cuentas_id)
			{
				if (globals.gmoneda_consulta == 1)
				{
		    		saldos[$saldos.mes] = saldos[$saldos.mes] + ftotpes		    		
		    	}
		    	else
		    	{
		    		saldos[$saldos.mes] = saldos[$saldos.mes] + ftotdol		    		
		    	}
			}
			else
			{
				var $reg = new Array($formato,$texto,null,saldos[1],saldos[2],saldos[3],saldos[4],saldos[5],saldos[6],saldos[7],saldos[8],saldos[9],saldos[10],saldos[11],saldos[12])			
		    	$ds.addRow($reg)
				var $cuenta   = $saldos.cuentas_id
				var $division = $saldos.division			
				var $texto    = $saldos.saldos_to_cuentas.descripcion
				var $formato  = $saldos.saldos_to_cuentas.cuenta_formato 			
				var saldos    = new Array()
				for (var j = 1 ; j <= 12 ; j++)
				{
					saldos[j] = null
				}	
				if (globals.gmoneda_consulta == 1)
				{
		    		saldos[$saldos.mes] = ftotpes		    		
		    	}
		    	else
		    	{
		    		saldos[$saldos.mes] = ftotdol		    		
		    	} 
			}
    	}
    	else
		{
			if ($cuenta == $saldos.cuentas_id && $division == $saldos.division)
			{
				if (globals.gmoneda_consulta == 1)
				{
		    		saldos[$saldos.mes] = saldos[$saldos.mes] + ftotpes		    		
		    	}
		    	else
		    	{
		    		saldos[$saldos.mes] = saldos[$saldos.mes] + ftotdol		    		
		    	}
			}
			else
			{
				var $reg = new Array($formato,$texto,$division,saldos[1],saldos[2],saldos[3],saldos[4],saldos[5],saldos[6],saldos[7],saldos[8],saldos[9],saldos[10],saldos[11],saldos[12])			
		    	$ds.addRow($reg)
				var $cuenta   = $saldos.cuentas_id
				var $division = $saldos.division			
				var $texto    = $saldos.saldos_to_cuentas.descripcion
				var $formato  = $saldos.saldos_to_cuentas.cuenta_formato 			
				var saldos    = new Array()
				for (var j = 1 ; j <= 12 ; j++)
				{
					saldos[j] = null
				}
				if (globals.gmoneda_consulta == 1)
				{
		    		saldos[$saldos.mes] = ftotpes		    		
		    	}
		    	else
		    	{
		    		saldos[$saldos.mes] = ftotdol		    		
		    	}
			}
    	}
    }
	if (ftipo == 1)
	{
		var $reg = new Array($formato,$texto,null,saldos[1],saldos[2],saldos[3],saldos[4],saldos[5],saldos[6],saldos[7],saldos[8],saldos[9],saldos[10],saldos[11],saldos[12])		
	}
	else
	{	
		var $reg = new Array($formato,$texto,$division,saldos[1],saldos[2],saldos[3],saldos[4],saldos[5],saldos[6],saldos[7],saldos[8],saldos[9],saldos[10],saldos[11],saldos[12])
	}
	$ds.addRow($reg)
	elements.tabs_220.removeAllTabs()
	var frm = solutionModel.getForm('movim_por_cta_det')
	var $tipos = new Array(JSColumn.TEXT,JSColumn.TEXT,JSColumn.INTEGER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER)
	var dSource = $ds.createDataSource('movimientos',$tipos)
	frm.dataSource = dSource
	forms.movim_por_cta_det.controller.sort("cuenta asc")
	forms.movim_por_cta_det.controller.recreateUI()
	elements.tabs_220.addTab(forms.movim_por_cta_det)
	return 0  
}

/**
 * @properties={typeid:24,uuid:"B535328E-C146-4F0F-8375-B0AC71DE73C0"}
 * @AllowToRunInFind
 */
function Saldos_cta() {
	fcuantos = 10
	/** @type {JSFoundSet<db:/contable/numcon>}*/
	var $numcon = databaseManager.getFoundSet('contable','numcon')
	var estado = $numcon.find()
	if (estado == false)
	{
		globals.DIALOGS.showWarningDialog("Aviso","Error al hacer el Find","Ok")
		return
	}
	$numcon.anio = fanio
	var cuantos = $numcon.search()
	if (cuantos == 0)
	{
		globals.DIALOGS.showWarningDialog("Aviso","Sin datos para dicho periodo","Ok")
		return 				
	}
	$numcon.sort("mes desc")
	$numcon.setSelectedIndex(1)
	ult_mes = $numcon.mes
	
	fcuantos = 20
	
	var $meses  = new Array()
	/** @type {JSFoundSet<db:/contable/varios>}*/
	var $varios = databaseManager.getFoundSet('contable','varios')
	var estado = $varios.find()
	if (estado == false)
	{
		globals.DIALOGS.showWarningDialog("Aviso","Error al hacer el Find","Ok")
		return
	}
	$varios.tipo = 1
	$varios.search()
	$varios.sort("codigo asc")
	var $cantMes = databaseManager.getFoundSetCount($varios)
	
	for (var i = 1 ; i <= $cantMes ; i++)
	{
		$varios.setSelectedIndex(i)
		$meses  [i+2] = $varios.abrevia
	}
	$meses[0] = 'Cuenta'
	$meses[1] = 'Descripcion'
	$meses[2] = 'Division'		
	var $ds = databaseManager.createEmptyDataSet(0,$meses)
	fcuantos = 1
	/** @type {JSFoundSet<db:/contable/saldos>}*/
	var $saldos = databaseManager.getFoundSet('contable','saldos')
	var estado = $saldos.find()
	if (estado == false)
	{
		globals.DIALOGS.showWarningDialog("Aviso","Error al hacer el Find","Ok")
		return
	}
	$saldos.anio = 2000 + "..." + fanio
	$saldos.saldos_to_cuentas.cuenta_busca = fcta_des + "..." + fcta_has
	var ctos = $saldos.search()
	fcuantos = 2
	if (ctos == 0)
	{
		globals.DIALOGS.showWarningDialog("Aviso","Sin movimientos","Ok")
		return 				
	}
	if (ftipo == 1)
	{
		$saldos.sort("saldos_to_cuentas.cuenta_busca asc, anio asc, mes asc")
	}
	else
	{
		$saldos.sort("saldos_to_cuentas.cuenta_busca asc, division asc, anio asc, mes asc")
	}
	var $ctos = databaseManager.getFoundSetCount($saldos)
	fcuantos = $ctos
	for (var i = 1 ; i <= $ctos ; i++)
	{
		$saldos.setSelectedIndex(i)
		ftotpes = $saldos.debe_pes - $saldos.haber_pes
		ftotdol = $saldos.debe_dol - $saldos.haber_dol
		if (gejercicio_to_ejercicios.fecha_fin.getMonth() == $saldos.mes && fAsientoCierre == 1)
		{
			ftotpes = ftotpes - $saldos.saldo_pes_cierre
			ftotdol = ftotdol - $saldos.saldo_dol_cierre
		} 	
		if (i == 1)
		{
			var $cuenta   = $saldos.cuentas_id
			var $division = $saldos.division
			var $texto    = $saldos.saldos_to_cuentas.descripcion
			var $formato  = $saldos.saldos_to_cuentas.cuenta_formato 			
			var saldos    = new Array()
			for (var j = 1 ; j <= 12 ; j++)
			{
				saldos[j] = null
			}
		}
		if (ftipo == 1)
		{
			if ($cuenta == $saldos.cuentas_id)
			{  		
				if ($saldos.anio != fanio)
				{
					faux_mes = 1
				}
				else 
				{
					faux_mes = $saldos.mes
				}
				if (globals.gmoneda_consulta == 1)
				{ 				
		    		saldos[faux_mes] = saldos[faux_mes] + ftotpes 		    		
		    	}
		    	else
		    	{
		    		saldos[faux_mes] = saldos[faux_mes] + ftotdol 		    		
		    	}				
			}
			else
			{
  				for (var k = 2 ; k <= ult_mes ; k++)
				{
					saldos[k] = saldos[k] + saldos[k - 1]
				} 
				var $reg = new Array($formato,$texto,null,saldos[1],saldos[2],saldos[3],saldos[4],saldos[5],saldos[6],saldos[7],saldos[8],saldos[9],saldos[10],saldos[11],saldos[12])			
		    	$ds.addRow($reg)
				var $cuenta   = $saldos.cuentas_id
				var $division = $saldos.division			
				var $texto    = $saldos.saldos_to_cuentas.descripcion
				var $formato  = $saldos.saldos_to_cuentas.cuenta_formato 			
				var saldos    = new Array()
				for (var j = 1 ; j <= 12 ; j++)
				{
					saldos[j] = null
				}
				if ($saldos.anio != fanio)
				{
					faux_mes = 1
				}
				else 
				{
					faux_mes = $saldos.mes
				}
				if (globals.gmoneda_consulta == 1)
				{ 				
			    	saldos[faux_mes] = ftotpes		    		
			    }
			    else
			    {
			    	saldos[faux_mes] = ftotdol		    		
			    } 				
			}
    	}
    	else
		{
			if ($cuenta == $saldos.cuentas_id && $division == $saldos.division)
			{
				if ($saldos.anio != fanio)
				{
					faux_mes = 1
				}
				else 
				{
					faux_mes = $saldos.mes
				}
				if (globals.gmoneda_consulta == 1)
				{
		    		saldos[faux_mes] = saldos[faux_mes] + ftotpes		    		
		    	}
		    	else
		    	{
		    		saldos[faux_mes] = saldos[faux_mes] + ftotdol		    		
		    	}
			}
			else
			{
				for (k=2; k<=ult_mes ; k++)
				{
					saldos[k] = saldos[k] + saldos[k - 1]
				}				
				var $reg = new Array($formato,$texto,$division,saldos[1],saldos[2],saldos[3],saldos[4],saldos[5],saldos[6],saldos[7],saldos[8],saldos[9],saldos[10],saldos[11],saldos[12])			
		    	$ds.addRow($reg)
				var $cuenta   = $saldos.cuentas_id
				var $division = $saldos.division			
				var $texto    = $saldos.saldos_to_cuentas.descripcion
				var $formato  = $saldos.saldos_to_cuentas.cuenta_formato 			
				var saldos    = new Array()
				for (var j = 1 ; j <= 12 ; j++)
				{
					saldos[j] = null
				}				
				if ($saldos.anio != fanio)
				{
					faux_mes = 1
				}
				else 
				{
					faux_mes = $saldos.mes
				}				
				if (globals.gmoneda_consulta == 1)
				{ 				
			    	saldos[faux_mes] = ftotpes		    		
			    }
			    else
			    {
			    	saldos[faux_mes] = ftotdol		    		
			    } 					
			}
    	}
    }
	for (k = 2; k <= ult_mes ; k++)
	{
		saldos[k] = saldos[k] + saldos[k - 1]
	}	
	if (ftipo == 1)
	{
		var $reg = new Array($formato,$texto,null,saldos[1],saldos[2],saldos[3],saldos[4],saldos[5],saldos[6],saldos[7],saldos[8],saldos[9],saldos[10],saldos[11],saldos[12])		
	}
	else
	{	
		var $reg = new Array($formato,$texto,$division,saldos[1],saldos[2],saldos[3],saldos[4],saldos[5],saldos[6],saldos[7],saldos[8],saldos[9],saldos[10],saldos[11],saldos[12])
	}
	$ds.addRow($reg)
	elements.tabs_220.removeAllTabs()
	var frm = solutionModel.getForm('movim_por_cta_det')
	var $tipos = new Array(JSColumn.TEXT,JSColumn.TEXT,JSColumn.INTEGER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER,JSColumn.NUMBER)
	var dSource = $ds.createDataSource('movimientos',$tipos)
	frm.dataSource = dSource
	forms.movim_por_cta_det.controller.sort("cuenta asc")
	forms.movim_por_cta_det.controller.recreateUI()
	elements.tabs_220.addTab(forms.movim_por_cta_det)
}

/**
 * Handle focus element loosing focus.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"FCDCA222-C26B-4072-8241-E64449504EB0"}
 */
function onFocusLost_cta_des(event) {
	elements.fcta_des.caretPosition = 0
	return true
}

/**
 * Handle focus element loosing focus.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"19695994-0442-4F0A-B72E-90C8DF806CD6"}
 */
function onFocusLost_cta_has(event) {
	elements.fcta_has.caretPosition = 0
	return true
}
